﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using Librerias;
using System.Data;


namespace Librerias
{
    /// <summary>
    /// Entidad de negocio de ENTurno
    /// </summary>
     public class ENTurno:ENBase
    {
        #region variables
        /// <summary>
        /// Identificador del profesor
        /// </summary>
        private string correo;

        /// <summary>
        /// Codigo asignatura
        /// </summary>
        private string codigo;

        /// <summary>
        /// Tipo de clase (Teoria o Practica)
        /// </summary>
        private string tipo;

        /// <summary>
        /// Numero de Aula 
        /// </summary>
        private int aula;

         /// <summary>
         /// Dia de la semana 1:Lunes, 2:Martes etc...
         /// </summary>
        private int dia;

        /// <summary>
        /// Hora incicial
        /// </summary>
        private DateTime h_ini;

        /// <summary>
        /// Hora final
        /// </summary>
        private DateTime h_fin;

        private CADTurno cad = new CADTurno();

        #endregion

        #region get set
         /// <summary>
         /// GETS Y SETS
         /// </summary>
        public string Correo
        {
            get { return correo; }
            set { correo = value; }
        }
        public string Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }
        public string Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }
        public int Aula
        {
            get { return aula; }
            set { aula = value; }
        }
        public int Dia
        {
            get { return dia; }
            set { dia = value; }
        }
        public DateTime H_ini
        {
            get { return h_ini; }
            set { h_ini = value; }
        }
        public DateTime H_fin
        {
            get { return h_fin; }
            set { h_fin = value; }
        }

        #endregion

        #region Constructores
        /// <summary>
        /// Constructor vacío
        /// </summary>
        public ENTurno()
        {
            correo = string.Empty;
            codigo = string.Empty;
            tipo = string.Empty;
            aula = 0;
            dia = 0;
            h_ini = DateTime.Now;
            h_fin = DateTime.Now;
        }

        /// <summary>
        /// Constructor Parametrizado
        /// </summary>
        /// <param name="uncorreo">correo</param>
        /// <param name="uncodigo">código</param>
        /// <param name="untipo">tipo</param>
        /// <param name="unaula">aula</param>
        /// <param name="undia">dia</param>
        /// <param name="unah_ini">hora inicial</param>
        /// <param name="unah_fin">hora fin</param>
        public ENTurno(string uncorreo, string uncodigo, string untipo, int unaula, int undia, DateTime unah_ini, DateTime unah_fin)
        {
            correo = uncorreo;
            codigo = uncodigo;
            tipo = untipo;
            aula = unaula;
            dia = undia;
            h_ini = unah_ini;
            h_fin = unah_fin;
        }
        #endregion

        /// <summary>
        /// Consulta Turnos según un código 
        /// </summary>
        /// <param name="CodigoBuscado">código a encontrar</param>
        /// <returns>ArrayList con los datos</returns>
        public ArrayList ConsultarTurno(string CodigoBuscado)
        {
            return cad.ConsultarTurno(CodigoBuscado);
        }

         /// <summary>
         /// Nos dirá si un turno ha sido ya asignado
         /// </summary>
         /// <param name="ProfesorAComprobar">profesor</param>
         /// <param name="DiaAComprobar">dia</param>
         /// <param name="H_iniAComprobar">hora inicio</param>
         /// <param name="H_finAComprobar">nora fin</param>
         /// <returns>V si ya asignado</returns>
        public bool EsYaAsignadoTurno(string ProfesorAComprobar, int DiaAComprobar, DateTime H_iniAComprobar, DateTime H_finAComprobar)
        {
          return cad.EsYaAsignadoTurno(ProfesorAComprobar, DiaAComprobar, H_iniAComprobar, H_finAComprobar);
        }

         /// <summary>
         /// Persiste una EN ENTurno
         /// </summary>
         /// <param name="Turno">EN</param>
        public void AltaTurno(ENTurno Turno)
        {
            cad.AltaTurno(Turno);
        }

        /// <summary>
        /// Borra un Turno
        /// </summary>
        /// <param name="Turno">EN Turno</param>
        public void BorraTurno(ENTurno Turno)
        {
            cad.BorraTurno(Turno);
        }

         /// <summary>
         /// Nos dice los turnos de un profesor
         /// </summary>
         /// <param name="ProfesorAuxCorreo">correo del profesor</param>
         /// <returns></returns>
         public DataTable ConsultaTurnosProfesor(string ProfesorAuxCorreo)
         {
             return cad.ConsultaTurnosProfesor(ProfesorAuxCorreo);
         }

         /// <summary>
         /// Nos dice los turnos de un profesor y una asignatura
         /// </summary>
         /// <param name="ProfesorAuxCorreo">correo del profesor</param>
         /// <returns></returns>
         public DataTable ConsultaTurnosyProfesorPorAsignatura(String asignatura)
         {
             return cad.ConsultaTurnosyProfesorPorAsignatura(asignatura);
         }
         public DataTable ConsultaTurnos(String asig)
         {
             return cad.ConsultaTurnos(asig);
         }
         public DataTable GetAsignaturasProfesor(String alu)
         {
             return cad.GetAsignaturasProfesor(alu);
         }
    }
}
